#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

// 回调函数，用于处理 select 查询的每一行结果
int rscallback(void *p, int argc, char **argv, char **argvv)
{
    int i;
    *(int *)p = 0; // 标记结果非空
    for (i = 0; i < argc; i++)
    {
        printf("%s = %s ", argvv[i], argv[i] ? argv[i] : "NULL");
    }
    putchar('\n');
    return 0;
}

int main(void)
{
    sqlite3 *db;
    char *err = 0;
    int ret = 0;
    int empty = 1; // 初始标记结果为空

    // 打开数据库
    ret = sqlite3_open("./test.db", &db);
    if (ret != SQLITE_OK)
    {
        fputs(sqlite3_errmsg(db), stderr);
        fputs("\n", stderr);
        exit(1);
    }

    // 执行 SELECT 查询
    ret = sqlite3_exec(db, "select * from employee;", rscallback, &empty, &err);
    if (ret != SQLITE_OK)
    {
        fputs(err, stderr);
        fputs("\n", stderr);
        sqlite3_close(db);
        exit(1);
    }

    // 检查查询结果是否为空
    if (empty)
    {
        fputs("table employee is empty\n", stderr);
        // 文档中这里是 exit(1)，但实际可能只是没有数据
    }

    // 关闭数据库
    sqlite3_close(db);
    return 0;
}